
#include "iostream"
#include "vector"
#include "unordered_map"
#include "unordered_set"
#include "algorithm"
#include "string"
#include "list"
#include "string.h"

class OneLoop {
public:

    std::vector<int> vec;
    std::vector<int> dp;//当前节点最长情况的长度
    int max=1;
    void run(
           int a
    ) {
        vec.resize(a);
        dp.resize(a);
        for(int i=0;i<a;i++){
            int in;std::cin>>in;
            vec[i]=(in);
        }
        for(int i=0;i<a;i++){
            int found=-1;
            //向前找比自己小的数中 dp最大的
            for(int j=0;j<i;j++){
                if(vec[j]<=vec[i]){
                    if(found!=-1){
                        if(dp[j] > dp[found]){
                            found=j;
                        }
                    }else{
                        found=j;
                    }
                }
            }
            if(found==-1){
                dp[i]=1;
            }else{
                dp[i]=dp[found]+1;
                max=std::max(max,dp[i]);
            }
        }
//        for(int i=0;i<vec.size();i++){
//            recur2(i,1);
//        }
        std::cout<<max<<std::endl;
    }
};

class Solution {
public:
    void run() {

        bool first = true;
        int a, b, c, d, e;
        std::string s1, s2;
        while (
                std::cin >> a
                ) {
//            std::getline(std::cin,s2);
            auto cc=std::cin.get();//换行
            OneLoop loop;
            loop.run(a);
        }

    }
};

int main() {
//    bool cur_num= true;
    Solution().run();
    return 0;
}

